Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Block Bindings: Allow only admin users to create and modify bindings by default #64570

Merged
merged 15 commits into from
Sep 4, 2024

Conversation

SantosGuillamot
Copy link
Contributor

@SantosGuillamot SantosGuillamot commented Aug 16, 2024

What?

This pull request removes the experimental flag to enable the block bindings UI to create connections and tries an approach where only admin users can create and modify bindings by default.

As part of it, it includes a new canUpdateBlockBindings editor setting to let developers override this behavior.

It creates a "bindings" group in the inspector controls that follows the same "workflows" as the Advanced panel. This means that in the blocks where there are no "Settings", it shows in the initial list. This solves the issue where every empty paragraph was adding the panel and changing the workflow.

Additionally, it address some improvements to the UX, like not showing the help text when there are no attributes connected.

Image with URL connected Empty paragraph
Screenshot 2024-09-03 at 16 11 44 Screenshot 2024-09-03 at 16 11 55

Why?

It can remove the experiment while keeping it safe only for admin users and provides a method to change this behavior. And it solves the issue with empty paragraphs.

How?

I added a new canUpdateBlockBindings editor setting that it is true for admin users by default. This setting is read from the block bindings component to decide if it should show as "read-only" or it should allow the user to create and modify connections.

Apart from that, I created a new "bindings" group to put the panel just above the Advanced section in the different scenarios.

Testing Instructions

Logged as an admin

  1. Go to a page and insert a paragraph.
  2. Check that the bindings UI to connect attributes appear on top of the Advanced section, without creating a new "Settings" tab.
  3. Check that you can create bindings.

Logged as an editor

  1. Go to a page and insert a paragraph.
  2. Check that the bindings UI to connect attributes is not present.

Copy link

github-actions bot commented Aug 16, 2024

Size Change: -858 B (-0.05%)

Total Size: 1.77 MB

Filename Size Change
build/api-fetch/index.min.js 2.32 kB +11 B (+0.48%)
build/block-directory/index.min.js 7.31 kB +16 B (+0.22%)
build/block-editor/index.min.js 257 kB +685 B (+0.27%)
build/block-library/blocks/button/editor-rtl.css 265 B -45 B (-14.52%) 👏
build/block-library/blocks/button/editor.css 265 B -45 B (-14.52%) 👏
build/block-library/blocks/buttons/editor-rtl.css 291 B -45 B (-13.39%) 👏
build/block-library/blocks/buttons/editor.css 291 B -45 B (-13.39%) 👏
build/block-library/blocks/comments-pagination/editor-rtl.css 228 B +7 B (+3.17%)
build/block-library/blocks/comments-pagination/editor.css 217 B +6 B (+2.84%)
build/block-library/blocks/cover/editor-rtl.css 641 B -27 B (-4.04%)
build/block-library/blocks/cover/editor.css 642 B -27 B (-4.04%)
build/block-library/blocks/query-pagination/editor-rtl.css 225 B +5 B (+2.27%)
build/block-library/blocks/query-pagination/editor.css 215 B +7 B (+3.37%)
build/block-library/blocks/site-title/editor-rtl.css 85 B -38 B (-30.89%) 🎉
build/block-library/blocks/site-title/editor.css 85 B -38 B (-30.89%) 🎉
build/block-library/blocks/video/editor-rtl.css 396 B -145 B (-26.8%) 🎉
build/block-library/blocks/video/editor.css 397 B -145 B (-26.75%) 🎉
build/block-library/editor-rtl.css 11.8 kB -134 B (-1.13%)
build/block-library/editor.css 11.8 kB -134 B (-1.13%)
build/block-library/index.min.js 217 kB +78 B (+0.04%)
build/components/index.min.js 224 kB -2 B (0%)
build/customize-widgets/index.min.js 11 kB +19 B (+0.17%)
build/edit-post/index.min.js 12.7 kB +6 B (+0.05%)
build/edit-site/index.min.js 217 kB -591 B (-0.27%)
build/edit-site/posts-rtl.css 7.21 kB -110 B (-1.5%)
build/edit-site/posts.css 7.21 kB -107 B (-1.46%)
build/edit-site/style-rtl.css 12.5 kB -129 B (-1.02%)
build/edit-site/style.css 12.5 kB -126 B (-1%)
build/edit-widgets/index.min.js 17.7 kB +24 B (+0.14%)
build/editor/index.min.js 101 kB +174 B (+0.17%)
build/interactivity/debug.min.js 16.3 kB -4 B (-0.02%)
build/interactivity/index.min.js 13.2 kB -4 B (-0.03%)
build/list-reusable-blocks/index.min.js 2.18 kB +21 B (+0.97%)
build/nux/index.min.js 1.61 kB +20 B (+1.26%)
build/reusable-blocks/index.min.js 2.55 kB +4 B (+0.16%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 951 B
build/annotations/index.min.js 2.26 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/content-rtl.css 4.57 kB
build/block-editor/content.css 4.56 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/style-rtl.css 16.3 kB
build/block-editor/style.css 16.3 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/style-rtl.css 538 B
build/block-library/blocks/button/style.css 538 B
build/block-library/blocks/buttons/style-rtl.css 328 B
build/block-library/blocks/buttons/style.css 328 B
build/block-library/blocks/calendar/style-rtl.css 240 B
build/block-library/blocks/calendar/style.css 240 B
build/block-library/blocks/categories/editor-rtl.css 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-author-name/style-rtl.css 72 B
build/block-library/blocks/comment-author-name/style.css 72 B
build/block-library/blocks/comment-content/style-rtl.css 120 B
build/block-library/blocks/comment-content/style.css 120 B
build/block-library/blocks/comment-date/style-rtl.css 65 B
build/block-library/blocks/comment-date/style.css 65 B
build/block-library/blocks/comment-template/style-rtl.css 200 B
build/block-library/blocks/comment-template/style.css 199 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/style-rtl.css 234 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 832 B
build/block-library/blocks/comments/editor.css 832 B
build/block-library/blocks/comments/style-rtl.css 632 B
build/block-library/blocks/comments/style.css 631 B
build/block-library/blocks/cover/style-rtl.css 1.62 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 331 B
build/block-library/blocks/embed/editor.css 331 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 279 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 342 B
build/block-library/blocks/form-input/style.css 342 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 470 B
build/block-library/blocks/freeform/editor-rtl.css 2.6 kB
build/block-library/blocks/freeform/editor.css 2.6 kB
build/block-library/blocks/gallery/editor-rtl.css 955 B
build/block-library/blocks/gallery/editor.css 958 B
build/block-library/blocks/gallery/style-rtl.css 1.83 kB
build/block-library/blocks/gallery/style.css 1.82 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 344 B
build/block-library/blocks/group/editor.css 344 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 346 B
build/block-library/blocks/html/editor.css 347 B
build/block-library/blocks/image/editor-rtl.css 894 B
build/block-library/blocks/image/editor.css 892 B
build/block-library/blocks/image/style-rtl.css 1.59 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 1.65 kB
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 179 B
build/block-library/blocks/latest-posts/editor.css 179 B
build/block-library/blocks/latest-posts/style-rtl.css 509 B
build/block-library/blocks/latest-posts/style.css 510 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/loginout/style-rtl.css 61 B
build/block-library/blocks/loginout/style.css 61 B
build/block-library/blocks/media-text/editor-rtl.css 304 B
build/block-library/blocks/media-text/editor.css 303 B
build/block-library/blocks/media-text/style-rtl.css 516 B
build/block-library/blocks/media-text/style.css 515 B
build/block-library/blocks/more/editor-rtl.css 427 B
build/block-library/blocks/more/editor.css 427 B
build/block-library/blocks/navigation-link/editor-rtl.css 644 B
build/block-library/blocks/navigation-link/editor.css 645 B
build/block-library/blocks/navigation-link/style-rtl.css 192 B
build/block-library/blocks/navigation-link/style.css 191 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.2 kB
build/block-library/blocks/navigation/editor.css 2.2 kB
build/block-library/blocks/navigation/style-rtl.css 2.25 kB
build/block-library/blocks/navigation/style.css 2.23 kB
build/block-library/blocks/navigation/view.min.js 1.03 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 378 B
build/block-library/blocks/page-list/editor.css 378 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 236 B
build/block-library/blocks/paragraph/editor.css 236 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author-biography/style-rtl.css 74 B
build/block-library/blocks/post-author-biography/style.css 74 B
build/block-library/blocks/post-author-name/style-rtl.css 69 B
build/block-library/blocks/post-author-name/style.css 69 B
build/block-library/blocks/post-author/editor-rtl.css 107 B
build/block-library/blocks/post-author/editor.css 107 B
build/block-library/blocks/post-author/style-rtl.css 188 B
build/block-library/blocks/post-author/style.css 189 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 527 B
build/block-library/blocks/post-comments-form/style.css 528 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 B
build/block-library/blocks/post-content/style-rtl.css 79 B
build/block-library/blocks/post-content/style.css 79 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 155 B
build/block-library/blocks/post-excerpt/style.css 155 B
build/block-library/blocks/post-featured-image/editor-rtl.css 729 B
build/block-library/blocks/post-featured-image/editor.css 726 B
build/block-library/blocks/post-featured-image/style-rtl.css 347 B
build/block-library/blocks/post-featured-image/style.css 347 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 399 B
build/block-library/blocks/post-template/style.css 398 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 134 B
build/block-library/blocks/pullquote/editor.css 134 B
build/block-library/blocks/pullquote/style-rtl.css 342 B
build/block-library/blocks/pullquote/style.css 342 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/style-rtl.css 287 B
build/block-library/blocks/query-pagination/style.css 283 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 452 B
build/block-library/blocks/query/editor.css 451 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 236 B
build/block-library/blocks/read-more/style-rtl.css 138 B
build/block-library/blocks/read-more/style.css 138 B
build/block-library/blocks/rss/editor-rtl.css 101 B
build/block-library/blocks/rss/editor.css 101 B
build/block-library/blocks/rss/style-rtl.css 288 B
build/block-library/blocks/rss/style.css 287 B
build/block-library/blocks/search/editor-rtl.css 199 B
build/block-library/blocks/search/editor.css 199 B
build/block-library/blocks/search/style-rtl.css 672 B
build/block-library/blocks/search/style.css 671 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/search/view.min.js 475 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 806 B
build/block-library/blocks/site-logo/editor.css 803 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-tagline/style-rtl.css 65 B
build/block-library/blocks/site-tagline/style.css 65 B
build/block-library/blocks/site-title/style-rtl.css 90 B
build/block-library/blocks/site-title/style.css 90 B
build/block-library/blocks/social-link/editor-rtl.css 338 B
build/block-library/blocks/social-link/editor.css 338 B
build/block-library/blocks/social-links/editor-rtl.css 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.5 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table-of-contents/style-rtl.css 83 B
build/block-library/blocks/table-of-contents/style.css 83 B
build/block-library/blocks/table/editor-rtl.css 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/editor-rtl.css 144 B
build/block-library/blocks/tag-cloud/editor.css 144 B
build/block-library/blocks/tag-cloud/style-rtl.css 266 B
build/block-library/blocks/tag-cloud/style.css 265 B
build/block-library/blocks/template-part/editor-rtl.css 368 B
build/block-library/blocks/template-part/editor.css 368 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/style-rtl.css 192 B
build/block-library/blocks/video/style.css 192 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.8 kB
build/block-library/style.css 14.8 kB
build/block-library/theme-rtl.css 708 B
build/block-library/theme.css 712 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.4 kB
build/commands/index.min.js 16.1 kB
build/commands/style-rtl.css 955 B
build/commands/style.css 952 B
build/components/style-rtl.css 12.1 kB
build/components/style.css 12.1 kB
build/compose/index.min.js 12.9 kB
build/core-commands/index.min.js 2.82 kB
build/core-data/index.min.js 73.2 kB
build/customize-widgets/style-rtl.css 1.35 kB
build/customize-widgets/style.css 1.35 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.98 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 580 B
build/edit-post/style-rtl.css 2.31 kB
build/edit-post/style.css 2.31 kB
build/edit-widgets/style-rtl.css 4.2 kB
build/edit-widgets/style.css 4.2 kB
build/editor/style-rtl.css 9.28 kB
build/editor/style.css 9.29 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.09 kB
build/format-library/style-rtl.css 476 B
build/format-library/style.css 476 B
build/hooks/index.min.js 1.54 kB
build/html-entities/index.min.js 445 B
build/i18n/index.min.js 3.58 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.78 kB
build/interactivity/navigation.min.js 1.16 kB
build/interactivity/query.min.js 742 B
build/interactivity/router.min.js 2.8 kB
build/interactivity/search.min.js 615 B
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.31 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/style-rtl.css 846 B
build/list-reusable-blocks/style.css 846 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.3 kB
build/notices/index.min.js 946 B
build/nux/style-rtl.css 749 B
build/nux/style.css 745 B
build/patterns/index.min.js 7.34 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 554 B
build/preferences/style.css 554 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 1.01 kB
build/react-i18n/index.min.js 630 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.1 kB
build/router/index.min.js 1.96 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.04 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.85 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 560 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.2 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

Copy link

github-actions bot commented Aug 16, 2024

Flaky tests detected in d357926.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/10420898477
📝 Reported issues:

@jasmussen
Copy link
Contributor

Always good to press the issue.

I have the experiment enabled, at the moment, and I think there are a couple of other things we can try first. For further context, when I have no bindings registered, and no plugins active, I don't see the panel:

Screenshot 2024-08-16 at 11 39 35

That's great, it's how it should be.

As soon as I enable Jetpack, it shows up, like this:

Screenshot 2024-08-16 at 11 41 00

This is because Jetpack registers a _jetpack_memberships_contains_paid_content which gets picked up here. No doubt other plugins register similar pieces, that will make it show up. In fact it seems likely that many of the most commonly used plugins will cause this panel to appear. It's not clear to me if we can delineate between this metadata, or even if we want to (probably not), but to me it suggests that we should revisit the empty state of the panel. Quick mockup:

Improvements

Changes here:

  • Entire panel is moved to the bottom, right above "Advanced".
  • Help text, "Attributes connected to various sources", is shown only when you've set an attribute, and is $helptext-font-size (i.e. 12px)
  • value in the ItemGroup is similarly help-text font size.

Both of these would reduce the footprint of the panel when you're not using it, to the point that it might be fine to have there, without explicitly enabling or disabling it.

Which is also to say, we might still add an option to disable it, though perhaps it should default to on?

@jarekmorawski
Copy link

Joen's proposal makes plenty of sense to me. I'd go one step further and don't display the help text at all, no matter if there are attributes or not. We don't explain what other sections are for so this feels a bit inconsistent. Also, the text itself isn't very helpful because it doesn't say what attributes or sources are, and given that it's only shown if there's at least one connection, the user is likely familiar with the concept.

@jasmussen
Copy link
Contributor

Figma, btw, if you want to tinker! Forgot to add that in my previous comment.

@SantosGuillamot
Copy link
Contributor Author

Yes, the empty panel is something we wanted to improve as well. And the suggestions made make sense to me. Thanks for sharing them 🙂 On the other hand, I believe we can work on that on another pull request.

For further context, when I have no bindings registered, and no plugins active, I don't see the panel

If that's the case that might be a "bug". When you have the experiment enabled, the idea is to always show the empty panel because users should be able to create bindings for an empty paragraph, for example.

Both of these would reduce the footprint of the panel when you're not using it, to the point that it might be fine to have there, without explicitly enabling or disabling it.

Which is also to say, we might still add an option to disable it, though perhaps it should default to on?

The main problem with having the default to on is the paragraph block. Right now, the paragraph block doesn't have any "Settings", so when you enter a new paragraph, it just shows the "Styles".

If we introduce a new setting like in this case, it creates a new tab for "Settings", which is selected by default.

That means that it changes the workflows of any paragraph.

You can find more context in this comment in the UI concerns section: link.

Help text, "Attributes connected to various sources", is shown only when you've set an attribute

I don't like the current empty panel and I agree that "Attributes connected to various sources" sounds confusing. On the other hand, I feel just having "Attributes" isn't clear enough for users. We discussed in the past having Bindings or Connections but the feedback was it is too technical. Other possibilities could be "Dynamic Data" or "Custom Fields" if we decide to keep this UI just for custom fields and not other sources.

@jasmussen
Copy link
Contributor

If that's the case that might be a "bug". When you have the experiment enabled, the idea is to always show the empty panel because users should be able to create bindings for an empty paragraph, for example.

Right, good point.

The main problem with having the default to on is the paragraph block. Right now, the paragraph block doesn't have any "Settings", so when you enter a new paragraph, it just shows the "Styles".
If we introduce a new setting like in this case, it creates a new tab for "Settings", which is selected by default.

That does seem to be the key issue to solve indeed.

Can we make an exception for this panel, just like there is an exception for "Advanced", so that it doesn't split the inspector?

It would still, like the Advanced panel, show up only on the Settings tab if that tab is present.

@SantosGuillamot
Copy link
Contributor Author

Can we make an exception for this panel, just like there is an exception for "Advanced", so that it doesn't split the inspector?

That's something we considered and I believe I actually have a local branch with that change working. However, it would mean having this panel in the "Styles" tab, which doesn't seem correct and it is some feedback we got if I remember correctly.

@jasmussen
Copy link
Contributor

However, it would mean having this panel in the "Styles" tab, which doesn't seem correct and it is some feedback we got if I remember correctly.

Are you sure? The "Advanced" panel doesn't show up in the Styles tab, only in the Settings tab, yet it doesn't cause the Paragraph to have the split tabs.

@SantosGuillamot
Copy link
Contributor Author

I might be confusing what is "Styles" tab and what is "Settings" tab. For the paragraph this is how it looks like:

Screenshot 2024-08-16 at 12 52 49

I assumed those were just styles and that's why I called it "Styles" tab. Although it's true there is no mention for "Styles". I'm happy to introduce it above the "Advanced" section.

@jasmussen
Copy link
Contributor

Ah, in that case, the "Advanced" panel is exempt from the rules. For any inspector that splits in Settings & Styles, the "Advanced" panel will show up on the "Settings" tab. But it doesn't, as you can see, cause the Paragraph to split into those two. And similarly I could see the same behavior applied to Attributes.

@SantosGuillamot
Copy link
Contributor Author

I have just pushed some changes to make it work that way:

Image with URL connected Empty paragraph
Screenshot 2024-08-16 at 13 14 44 Screenshot 2024-08-16 at 13 15 00

I agree that we need to revisit the help text and probably remove it when there are no bindings. I still believe "Attributes" is not clear enough. What would you think about this:

  • Remove the help text when there are no bindings.
  • Rename it to "Dynamic Data" or "Connections".
  • Change the text when bindings are created to something like "Connected to custom fields or other dynamic data".
  • Adapt the font-size as suggested in your comment.

@jasmussen
Copy link
Contributor

Remove the help text when there are no bindings.

Yes.

Rename it to "Dynamic Data" or "Connections".

I quite like "Attributes", I think we should keep it for the time being.

Change the text when bindings are created to something like "Connected to custom fields or other dynamic data".

I'm personally fine with help text being present when there are bindings, and I'm flexible on the verbiage. Though I do like that the current help text fits on one line. If we do have to go to two lines, need to make sure it doesn't wrap in a way that creates a typographic widow. That should be automatically handled due to text-wrap: pretty;, but mentioning it to make sure.

@SantosGuillamot SantosGuillamot changed the title Block Bindings: Try enabling bindings panel in the block preferences Block Bindings: Enable panel to create bindings in the block preferences Aug 16, 2024
@SantosGuillamot
Copy link
Contributor Author

I have just pushed those changes to the help text.

It doesn't appear when there are no bindings

Screenshot 2024-08-16 at 14 47 54

It shows when there are bindings with a different text

Screenshot 2024-08-16 at 14 48 04

@SantosGuillamot
Copy link
Contributor Author

I believe this is ready for review. Now it adds a way to enable/disable this UI and it fixes the issue of interfering with the paragraph block.

I guess there are two questions:

  • Is it okay to use "Preferences" to enable/disable the bindings creation?
  • Is the UX good enough to remove the experiment?

In my opinion, it is fine for this first iteration and we can keep working on top of it.

I'm gonna be on holiday next week, feel free to push any required changes.

@SantosGuillamot SantosGuillamot marked this pull request as ready for review August 16, 2024 12:55
Copy link

github-actions bot commented Aug 16, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @jarekmorawski.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Unlinked contributors: jarekmorawski.

Co-authored-by: SantosGuillamot <[email protected]>
Co-authored-by: gziolo <[email protected]>
Co-authored-by: artemiomorales <[email protected]>
Co-authored-by: jasmussen <[email protected]>
Co-authored-by: bacoords <[email protected]>
Co-authored-by: cbravobernal <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@bacoords
Copy link
Contributor

This is because Jetpack registers a _jetpack_memberships_contains_paid_content which gets picked up here.

Should post meta that starts with an underscore be exposed by the Block Bindings API?

It's a precedent that fields starting with an underscore are "hidden" and don't show up in the regular Custom Fields UI. Feels like they shouldn't show up in Bindings either.

@SantosGuillamot

https://developer.wordpress.org/reference/functions/add_post_meta/#comment-467

@SantosGuillamot
Copy link
Contributor Author

Should post meta that starts with an underscore be exposed by the Block Bindings API?

Right now, it shows only the fields that are explicitly marked as public to be exposed in the REST API. I assumed that was enough, but I'm happy to hide the ones starting with underscore if that's expected. I don't have enough context to say if that's the case.

@gziolo
Copy link
Member

gziolo commented Aug 28, 2024

The preference can be added later if necessary. One thing to keep in mind if we go with the editor preference, then if it gets set on the server to false, then there should be no way to enable it on the client. So, there might be little incentive to control it for the client according to user preference. In case, the settings is the way to go the in WP core it can be placed somewhere in get_block_editor_settings function:

https://github.com/WordPress/wordpress-develop/blob/e569967ee45e23186f6aa7f479fcb48a7511436b/src/wp-includes/block-editor.php#L487

I was surprised to learn that canLockBlocks is always set to true and it happens on the server here:

// Allows to disable block locking interface.
canLockBlocks: true,

@SantosGuillamot
Copy link
Contributor Author

Okay, trying to summarize what this means:

  • I'll add a canUpdateBlockBindings editor settings that by default is true only for admins.
  • I'll remove the preference added in the UI in this pull request for now.
  • By default, admin users will be able to create/modify bindings.
  • By default, other roles won't be able to create/modify bindings BUT they will see the "read-only" panel when there are existing bindings.
  • Developers can add/remove permissions to create/modify bindings through a filter modifying the canUpdateBlockBindings editor setting.
  • It won't be possible to completely hide the "read-only" panel, at least for now.

Does this make sense?

@cbravobernal
Copy link
Contributor

Okay, trying to summarize what this means:

* I'll add a `canUpdateBlockBindings` editor settings that by default is `true` only for admins.

* I'll remove the preference added in the UI in this pull request for now.

* By default, `admin` users will be able to create/modify bindings.

* By default, other roles won't be able to create/modify bindings BUT they will see the "read-only" panel when there are existing bindings.

* Developers can add/remove permissions to create/modify bindings through a filter modifying the `canUpdateBlockBindings` editor setting.

* It won't be possible to completely hide the "read-only" panel, at least for now.

Does this make sense?

Yep, still I don't know what to say about editor or authors with their own content. Let's explore later.

@SantosGuillamot
Copy link
Contributor Author

I've made the mentioned changes in the latest commits. With that, this pull request covers:

  • Create a new "bindings" group that is placed on top of the Advanced settings. This solves the problem of creating a new "Settings" tab for blocks like paragraphs or headings.
  • It adds a new editor setting canUpdateBlockBindings to only allow admin users to create and modify connections. This can be change with the block_editor_settings_all filter.
  • It removes the experimental flag.
  • It polishes the UI and some help texts.

I'll work on a backport in core, and I'll update the description to reflect these changes, but everything should be working now.

@SantosGuillamot SantosGuillamot changed the title Block Bindings: Enable panel to create bindings in the block preferences Block Bindings: Allow only admin users to create and modify bindings by default Aug 28, 2024
Copy link
Contributor

@artemiomorales artemiomorales left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested this and it works as expected based on the most recent expected behavior (though the PR description as of this writing still needs to be updated) — admins can edit the attributes, editors cannot.

Screenshot 2024-09-02 at 8 09 12 PM

I do think we should add additional styling for the non-admin read only state, like setting the attribute name to gray, to signal that the the UI there has been disabled. Otherwise, the fact that it's disabled could be interpreted as a mistake.

What do you think?

function gutenberg_add_can_update_block_bindings_editor_setting( $editor_settings ) {
if ( empty( $editor_settings['canUpdateBlockBindings'] ) ) {
$editor_settings['canUpdateBlockBindings'] = current_user_can( 'manage_options' );
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm noting that a discussion around how these permissions should be set up is happening in the core PR: https://github.com/WordPress/wordpress-develop/pull/7258/files#r1736575839

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be fine to start with, but we need to sort it out and sync back to Gutenberg when we arrive on the final way for handling it in WP core. Thank you for connecting the dots 👍🏻

@gziolo
Copy link
Member

gziolo commented Sep 3, 2024

Help text, "Attributes connected to various sources", is shown only when you've set an attribute, and is $helptext-font-size (i.e. 12px)

This part from the #64570 (comment) left by @jasmussen wasn't addressed. Have you decided to keep the message? In my opinion, it doesn't bring too much value when no connections are established.

@SantosGuillamot
Copy link
Contributor Author

I do think we should add additional styling for the non-admin read only state, like setting the attribute name to gray, to signal that the the UI there has been disabled. Otherwise, the fact that it's disabled could be interpreted as a mistake.

I agree the "read-only" panel could be probably improved. On the other hand, it isn't still clear to me how. I'd vote for creating a separate discussion for that and make the improvements in a follow-up PR. In the end, the "read-only" panel hasn't changed in this PR, the styling is the same that we have right now in trunk without the experiment enabled.

This part from the #64570 (comment) left by @jasmussen wasn't addressed. Have you decided to keep the message? In my opinion, it doesn't bring too much value when no connections are established.

Mmm, it is supposed to be addressed. I shared how it was working in this comment. I have just checked the branch and it is working as expected for me.

Screenshot 2024-09-03 at 14 37 08

Did you see anything different or should I just update the description?

@gziolo
Copy link
Member

gziolo commented Sep 3, 2024

Mmm, it is supposed to be addressed. I shared how it was working in #64570 (comment). I have just checked the branch and it is working as expected for me.

The description and screenshot in the comments are misleading. I couldn't test it using Playground for some reason for the case with no connections. I don't have any more comments then 👍🏻

@SantosGuillamot
Copy link
Contributor Author

I have just updated the screenshots in the description. I hope that helps clarifying the current status.

Copy link
Contributor

@artemiomorales artemiomorales left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree the "read-only" panel could be probably improved. On the other hand, it isn't still clear to me how. I'd vote for creating a separate discussion for that and make the improvements in a follow-up PR. In the end, the "read-only" panel hasn't changed in this PR, the styling is the same that we have right now in trunk without the experiment enabled.

That works for me. Let's definitely have that discussion and aim to get those styling changes in for 6.7.

No additional comments from me either 👍

@artemiomorales artemiomorales merged commit b4676ad into trunk Sep 4, 2024
65 checks passed
@artemiomorales artemiomorales deleted the try/enable-bindings-panel-in-preferences branch September 4, 2024 21:11
@github-actions github-actions bot added this to the Gutenberg 19.2 milestone Sep 4, 2024
@fabiankaegy fabiankaegy added the Needs Dev Note Requires a developer note for a major WordPress release cycle label Sep 6, 2024
@MadtownLems
Copy link

I added a new canUpdateBlockBindings editor setting that it is true for admin users by default.

Just wanted to say how much we appreciate this inclusion. 🙏 (We run MultiSites and our Site Administrators should absolutely not be able to do this kind of stuff. The ability for us to remove that capability from folks with a server-side filter is everything! Cheers!)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Block bindings Needs Dev Note Requires a developer note for a major WordPress release cycle [Type] Enhancement A suggestion for improvement.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

9 participants